package com.learn.acm.bytedance;

import org.junit.jupiter.api.Test;

/**
 *
 * 415. 字符串相加
 * 给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和。
 * 提示：
 *
 * num1 和num2 的长度都小于 5100
 * num1 和num2 都只包含数字 0-9
 * num1 和num2 都不包含任何前导零
 * 你不能使用任何內建 BigInteger 库， 也不能直接将输入的字符串转换为整数形式
 * @author zhongshitao
 * @date 2020/9/24 2:24 下午
 */
public class Solution415 {


    @Test
    public void test415() {
        System.out.println(addStrings1("1233","4444555"));
    }

    public String addStrings1(String num1, String num2) {
        StringBuilder res = new StringBuilder();
        int i = num1.length()-1;
        int j = num2.length()-1;
        int add = 0;
        while (i >=0 || j >=0) {
            int num1Area = i >= 0 ? num1.charAt(i) - '0' : 0;
            int num2Area = j >= 0 ? num2.charAt(j) - '0' : 0;
            int sum = num1Area + num2Area + add;
            add = sum / 10;
            res.append(sum % 10);
            i--;
            j--;
        }
        res.reverse();
        return res.toString();
    }

























    public String addStrings(String num1, String num2) {
        int i = num1.length()-1;
        int j = num2.length()-1;
        int add = 0;
        StringBuilder res = new StringBuilder();
        while (i >= 0 || j >= 0 || add > 0) {
            int x = i >= 0 ? num1.charAt(i) - '0' : 0;
            int y = j >= 0 ? num2.charAt(j) - '0' : 0;
            int cur = x + y;
            res.append(cur % 10);
            add = cur / 10;
            i--;
            j--;
        }
        res.reverse();
        return res.toString();
    }



}
